package com.hlkj.pay.vo.common.req;

import com.hlkj.framework.common.pojo.PageParam;
import com.hlkj.framework.common.valid.EnumValid;
import com.hlkj.pay.enums.CommonEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.List;
import java.util.Set;

/**
 * @author monk@techsun.com
 * @date 2023/04/21 14:10
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class MessageRecordPageReq extends PageParam {
    private static final long serialVersionUID = -1404584467919178525L;
    /**
     * message id 用于与message 服务交互 uuid 生成
     */
    @Schema(description = "messageId")
    private String       messageId;

    /**
     * consumer_code
     */
    @Schema(description = "consumer_code")
    private String       consumerCode;
    /**
     * consumer_code
     */
    @Schema(description = "consumer_code")
    private List<String> consumerCodes;

    /**
     * 消息类型为短信时，存手机号码；邮件时存E-mail，微信时存Openid
     */
    @Schema(description = "消息类型为短信时，存手机号码；邮件时存E-mail，微信时存Openid")
    private String       receiver;

    /**
     * 消息类型：0-国内短信，1-国际/港澳台短息，2-邮件，3-微信
     * @see CommonEnum.TEMPLATE_TYPE
     */
    @Schema(description = "消息类型：0-国内短信，1-国际/港澳台短息，2-邮件，3-微信")
    @EnumValid(value = CommonEnum.TEMPLATE_TYPE.class,message = "消息类型无效")
    private Integer      templateType;
    @Schema(description = "消息类型：0-国内短信，1-国际/港澳台短息，2-邮件，3-微信")
    private Set<Integer> templateTypes;
    /**
     * 模板id
     */
    @Schema(description = "templateCode")
    private String       templateCode;
    /**
     * 多语言模板编码
     */
    @Schema(description = "多语言模板编码")
    private String       templateLanguageCode;
    /**
     * 发送时间
     */
    @Schema(description = "发送时间")
    private Long         sendTime;

    /**
     * 发送时间类型 1：立即发送 2：定时发送
     * @see CommonEnum.SEND_TIME_TYPE
     */
    @EnumValid(value = CommonEnum.SEND_TIME_TYPE.class,message = "发送时间类型无效")
    @Schema(description = "发送时间类型 1：立即发送 2：定时发送")
    private Integer      sendTimeType;

    /**
     * 模板参数
     */
    @Schema(description = "模板参数")
    private String       templateParameter;

    /**
     * 发送状态：1-待提交；2-提交中；3-提交成功；4-提交失败；5-发送失败；6-发送失败
     * @see CommonEnum.STATUS
     */
    @EnumValid(value = CommonEnum.STATUS.class,message = "发送状态无效")
    @Schema(description = "发送状态：1-待提交；2-提交中；3-提交成功；4-提交失败；5-发送失败；6-发送失败")
    private Integer      status;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String       remark;

    /**
     * 市场活动编码
     */
    @Schema(description = "市场活动编码")
    private String       activityCode;

    /**
     * 市场活动流程节点id
     */
    @Schema(description = "市场活动流程节点id")
    private String       activityProcessCode;
    @Schema(description = "startTime")
    private String       startTime;
    @Schema(description = "endTime")
    private String       endTime;

}
